/*
 * ORACLE PROPRIETARY/CONFIDENTIAL. Use is subject to license terms.
 *
 *
 *
 *
 *
 *
 *
 *
 *
 *
 *
 *
 *
 *
 *
 *
 *
 *
 *
 *
 */

/*
 *
 *
 *
 *
 *
 * Written by Doug Lea with assistance from members of JCP JSR-166
 * Expert Group and released to the public domain, as explained at
 * http://creativecommons.org/publicdomain/zero/1.0/
 */

package java.util.concurrent;


/**
 * 这个接口结合了Runnable和Future接口的功能，允许异步计算的结果被获取，并且提供了运行计算的能力。
 * Runnable接口使得实现类可以被安排执行，而Future接口使得对异步计算的结果可以被等待、查询和取消。
 * RunnableFuture是FutureTask类的实现基础，FutureTask同时实现了Runnable和Future接口。
 *
 * @param <V> 表示计算结果的类型。
 */
public interface RunnableFuture<V> extends Runnable, Future<V> {

    /**
     * 执行这个任务。这个方法是由执行框架调用的，不应当由用户直接调用。
     * 实现这个方法的类应当包含具体的计算逻辑。
     */
    void run();

    /*
     * 有的同学可能会对这个接口产生疑惑，既然已经继承了Runnable，该接口自然就继承了run方法，
     * 为什么要在该接口的内部再写一个run方法？
     * 单纯从理论上来说，这里确实是没有必要的，再多写一遍，我觉得大概就是为了看上去直观一点，便于文档或者UML图展示。
     */
}

